package exer;



/**
 * @author shkstart
 * @create 2022-08-11-21:20
 */
public class Num203 {
    private int size;
    //    当前火车的第一个节点
    private ListNode head;
    ListNode dummyHead = new ListNode(-1);



    public ListNode removeElements(ListNode head, int val) {

//        while ( head.val == val&&head != null)  {
//            ListNode node = head;
//            head = node.next;
//            node.next = null;
//            return head;
//        }
//        if (head == null) {
//
//            return null;
//        } else {
//            //此时头节点不为空.开始遍历
//            ListNode perv = head;
//            //寻找待删除元素的前驱节点
//            while (perv.next != null) {
//                if (perv.next.val == val) {
////                    找到待删除元素的前驱节点
//                    ListNode node = perv.next;
//                    //删除节点
//                    perv.next = node.next;
//                    node.next = null;
//
//                }else{
////                    没找到待删除节点
//                    perv = perv.next;
//                }
//
//            }
//            return head;
//        }


        ListNode perv = dummyHead;
        dummyHead.next = head;
        while (perv != null) {

            //此时就是待删除的前驱节点
            if (perv.next.val == val) {
                ListNode node = perv.next;
                perv.next = node.next;
                node.next = null;
            } else {
                perv = perv.next;
            }
        }
        return head;

    }

}
